package framework.helpers;

import org.openqa.selenium.By;
import framework.ApplicationManager;
import framework.entities.AppointmentData;

public class CasesHelper extends BaseHelperForRmis
{
    public CasesHelper(ApplicationManager app) {
        super(app);
    }

	/**
	 * Закрывает случай госпитализации с заданным результатом
	 *
	 * @param appointmentData данные назначения
	 */
	public void closeHospitalization(AppointmentData appointmentData) {
		log.info("Закрытие случая госпитализации:" + appointmentData);
		click(By.xpath(".//*[@id='hrSectionIdSectionTitle']/a"));
		chooseHospital(appointmentData.secondHospitalRecordDepartment);
		chooseHospitalRecordResult(appointmentData.hospitalRecordResult);
		clickSaveButton();
	}
	
	private void chooseHospital(String hospital) {
		click((By.xpath("//*[@id='hospitalRecordsScrollpane']/div[1]/div/table/tbody/tr[2]"))); // TODO сократить локатор
		click(By.cssSelector("[title='Перейти на расширенную форму редактирования записи'] a"));
	}
	
    private void chooseHospitalRecordResult(String hospitalRecordResult) {
       	click(By.xpath("//div[@id='hospitalRecord.result.idContainer']/div/div")); // TODO selectFirstInCombobox
    	typeAndSelectByNumber(By.name("hospitalRecord.result.name"), hospitalRecordResult, 0);
    }

	/**
	 * Запускает поиск случаев по имени пациента на странице случаев
	 *
	 * @param appointmentData данные назначения
	 */
	public void searchCases(AppointmentData appointmentData) {
		log.info(appointmentData);
    	choosePatient(appointmentData.patient);
		click(By.cssSelector("[title='Найти'] a"));
	}
	
	private void choosePatient(String patient) {
	   	click(By.xpath("//div[@id='individual.quick.search0Container']/div/div"));
	   	typeAndSelectByNumber(By.name("_individual.quick.search0Edit"), patient, 0);
	}	
}